package com.it.error;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/*
 *  配置全局异常处理器
 *  【说明】：全局异常发生，会执行该类中的方法
 *  【语法】：
 *        定义在类上
 *          @ControllerAdvice：可以返回逻辑视图、转发和重定向
 *          @RestControllerAdvice：相当于 @ResponseBody 直接返回字符串
 *        定义在方法上
 *          @ExceptionHandler(异常类.class)：指定要处理的异常类型
 *          在形参列表中可以获取到该异常类型的异常信息
 * 【注意】：
 *         指定的异常可以精准查找、或者查找父异常
 */
// @ControllerAdvice
@RestControllerAdvice
public class overallException {

    // 如果找不到精准异常类型，就会找他的父类异常
    @ExceptionHandler(Exception.class)
    public Object ExceptionHandler(Exception e) {
        String message = e.getMessage();
        System.out.println(message);
        return message;
    }

    @ExceptionHandler(NullPointerException.class)
    public Object NullPointerExceptionHandler(NullPointerException e) {
        // 打印一下异常信息
        String message = e.getMessage();
        System.out.println(message);
        return message;
    }

    @ExceptionHandler(ArithmeticException.class)
    public Object ArithmeticExceptionHandler(ArithmeticException e) {
        String message = e.getMessage();
        System.out.println(message);
        return message;
    }

}
